package com.bsj.power.common.file.web;

import cn.hutool.core.io.FileUtil;
import com.bsj.tools.DateUntil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.util.Date;

/**
 * @author yinhao
 * @version 1.0
 * @description 通用页面多媒体上传
 * @date 2024/6/26
 */
@Slf4j
public class MediaFileUtil {

    /**
     * 文件上传
     *
     * @param files 多媒体集合
     * @param path  业务对应保存文件的路径
     * @return
     * @throws Exception
     */
    public static String upload(MultipartFile[] files, String path) throws Exception {
        String yyyyMM = DateUntil.dateToStr("yyyyMM", new Date());
        StringBuilder annexUrl = new StringBuilder();
        if (files != null) {
            for (MultipartFile file : files) {
                if (file.isEmpty()) {
                    // 跳过空文件
                    continue;
                }
                String fileName = path + yyyyMM + File.separator + file.getOriginalFilename();
                if (!FileUtil.exist(fileName)) {
                    //如果文件不存在则先创建文件
                    FileUtil.mkdir(fileName);
                }
                File targetFile = new File(fileName);
                FileUtil.writeBytes(file.getBytes(), targetFile);
                annexUrl.append(fileName + ",");
            }
            String toStr = annexUrl.toString();
            return toStr.substring(0, toStr.length() - 1);
        }
        return null;
    }

    /**
     * 删除文件
     * @param url 主要是upload方法上生成的地址
     */
    public static void delete(String url) {
        if (url != null) {
            //先删除文件
            String[] split = url.split(",");
            for (String expAn : split) {
                if (expAn.isEmpty()) {
                    continue;
                }
                FileUtil.del(expAn);
            }
        }
    }
}
